package com.example.houseitemmanagebackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.houseitemmanagebackend.entity.UserLocation;

import java.util.List;

public interface UserLocationService extends IService<UserLocation> {

    /**
     * 添加用户到位置
     * 
     * @param userId     用户ID
     * @param locationId 位置ID
     * @param roleType   角色类型（0-访客，1-管理员，2-管理者，3-成员）
     * @return 是否添加成功
     */
    boolean addUserToLocation(Integer userId, Integer locationId, Integer roleType);

    /**
     * 更新用户在位置中的角色
     * 
     * @param userId     用户ID
     * @param locationId 位置ID
     * @param roleType   角色类型
     * @return 是否更新成功
     */
    boolean updateUserLocationRole(Integer userId, Integer locationId, Integer roleType);

    /**
     * 获取位置的所有用户
     * 
     * @param locationId 位置ID
     * @return 用户列表
     */
    List<Integer> getUsersByLocationId(Integer locationId);

    /**
     * 获取用户的所有位置
     * 
     * @param userId 用户ID
     * @return 位置列表
     */
    List<Integer> getLocationsByUserId(Integer userId);

    /**
     * 检查用户是否是位置的管理员
     * 
     * @param userId     用户ID
     * @param locationId 位置ID
     * @return 是否是管理员
     */
    boolean isLocationAdmin(Integer userId, Integer locationId);

    /**
     * 获取用户在位置中的角色类型
     * 
     * @param userId     用户ID
     * @param locationId 位置ID
     * @return 角色类型
     */
    Integer getUserRoleTypeInLocation(Integer userId, Integer locationId);

    /**
     * 从位置中移除用户
     * 
     * @param userId     用户ID
     * @param locationId 位置ID
     * @return 是否移除成功
     */
    boolean removeUserFromLocation(Integer userId, Integer locationId);

    /**
     * 根据位置ID获取所有用户-位置关系记录
     *
     * @param locationId 位置ID
     * @return 用户-位置关系列表
     */
    List<UserLocation> getUserLocationsByLocationId(Integer locationId);
}